Amazon QuickSight สามารถเขียนโค้ดสร้าง Dashboards, Analyzes และ Templates ได้แล้ว!!! #reInvent
ล่าสุด QuickSight ได้มีการอัพเดทใหญ่เกิดขึ้นจากบทความด้านล่างนี้
- Expanded API capabilities now generally available for Amazon QuickSight ซึ่งการอัปเดตล่าสุดทำให้ตอนนี้เราสามารถระบุข้อมูลคำจำกัดความสำหรับ Object (dashboards, analyses, templates) ด้วย การใช้งานคำสั่ง Create/Update API กล่าวอีกนัยหนึ่ง IaC สามารถทำได้แม้กับ QuickSight แล้ว ณ ตอนนี้
โดย Object หลักใน QuickSight ก็คือ dashboards, analyses และ datasets และจนถึงตอนนี้ ก็ไม่มีทางเลือกนอกจากสร้างจากหน้าจอคอนโซลของ QuickSight มีวิธีสร้างเทมเพลตและปรับใช้วัตถุที่สร้างขึ้น แต่ก็จำเป็นต้องมีการสร้างครั้งแรกก่อนด้วยจากตัวคอนโซลเอง
การทดลอง
ในครั้งนี้เราจะแยก "คำจำกัดความของแดชบอร์ด" จากแดชบอร์ดที่สร้างขึ้นและใช้เพื่อสร้างแดชบอร์ดใหม่ให้ ไม่เหมือนกับเทมเพลตก่อนหน้านี้ โดยเราสามารถแก้ไขแดชบอร์ดได้โดยแก้ไขโค้ดที่แยกออกมานั้นเอง
การจำแนกข้อมูลจาก object ที่มีอยู่
ก่อนอื่น มีการเพิ่ม Describe API บางส่วนในการอัปเดตนี้ และขณะนี้สามารถรับคำจำกัดความของวัตถุได้แล้ว ณ วันนี้ พร้อมใช้งานใน V1 ของ AWS CLI เท่านั้น ซึ่งต้องใช้ v1.27.18 หรือสูงกว่าขึ้นไป
- การกำหนดข้อมูล analysis
- การกำหนดข้อมูล dashboard
- การกำหนดข้อมูล template
% aws quicksight describe-dashboard-definition --aws-account-id 12345678901 --dashboard-id 4275a105-a178-4cf2-9460-d06ae154e0b4
{
"Status": 200,
"DashboardId": "4275a105-a178-4cf2-9460-d06ae154e0b4",
"Name": "chawish-blog",
"Definition": {
"DataSetIdentifierDeclarations": [
:
],
"Sheets": [
:
],
"CalculatedFields": [
:
],
"ParameterDeclarations": [
:
],
"FilterGroups": [],
"AnalysisDefaults": {
:
}
},
"RequestId": "0bfd8a31-dcca-48cf-a31e-0aa8b18d7c0b"
}
เนื้อหาถูกละไว้ในฐานที่เข้าใจ แต่ส่วนที่ไฮไลต์ด้านบนคือคำจำกัดความของทั้งหมด เนื่องจากจำเป็นต้องมีการตั้งค่าอย่างละเอียด ผมจะขอละเว้นไว้หนึ่งครั้งเพื่อให้คุณเข้าใจเฉพาะโครงร่างเท่านั้น
โดยคุณสามารถตรวจสอบข้อมูลจำเพาะโดยละเอียดได้จากการทดลองใช้งานเอง โดยผมต้องการเขียนบทความแยกต่างหากเกี่ยวกับข้อกำหนดโดยละเอียดสำหรับสิ่งนี้ครับ
สร้าง object โดยใช้การกำหนดตัวแปร
ในส่วนต่อไป เราจะจำกัดความพารามิเตอร์เพื่อเพิ่มไปใน Create/Update APIs เพื่อที่เราจะสามารถสร้างและอัพเดต Object ที่ระบุข้อมูลไว้ได้ และหลังจากนี้เราจะบันทึกข้อมูลที่เรากำหนดไว้ก่อนหน้านี้ลงในไฟล์ JSON ในเครื่องและใช้เพื่อสร้าง Dashboard ใหม่ในอันดับถัดไป
% aws quicksight create-dashboard --aws-account-id 123456789012 --dashboard-id test-dashboard1234 --name test-create --region ap-southeast-1 --definition file:///definition.json
{
"Status": 202,
"Arn": "arn:aws:quicksight:us-east-1:123456789012:user/default/cmth-chawish.tilakul",
"VersionArn": "arn:aws:quicksight:us-east-1:123456789012:user/default/cmth-chawish.tilakul",
"DashboardId": "dashboard1234",
"CreationStatus": "CREATION_IN_PROGRESS",
"RequestId": "822e5232-3065-43cf-a30e-844fa8e6f7db"
}
ซึ่งเมื่อผมรันคำสั่งนี้ Dashboard ก็ถูกสร้างขึ้นมาอย่างถูกต้องสมบูรณ์ แต่ดูเหมือนว่าจากบล็อกต้นฉบับเมื่อรันคำสั่งนี้จะเจอข้อความ Error แสดงขึ้นมา ซึ่งผมจะแปลให้อ่านกันว่าสาเหตุนั้นเกิดจากอะไร และทุกคนจะได้หลีกเลี่ยงปัญหาที่อาจจะเกิดขึ้นได้ทำให้ไม่สามารถสร้าง Dashboard ได้จากคำสั่งนี้
% aws-v1 quicksight create-dashboard --aws-account-id 123456789012 --dashboard-id hoge1028dashboard --name hoge1028dash board --definition file://hoge.json --profile hoge An error occurred (InvalidParameterValueException) when calling the CreateDashboard operation: Error in TextBox 80be6bdb-2392-4a55-9971-40af2f2b0baf_9a416ea9-bc03-406a-a082-9d3c72deb43d of Sheet 80be6bdb-2392-4a55-9971-40af2f2b0baf_f7e81c69-9a95-4ca8-838f-3ba9b7643c3e : Element "img" is unsupported for Text Box
จากข้อมูลที่ระบบแสดงมาพบว่ามีปัญหาในการดำเนินการ โดยแจ้งว่า TextBox ไม่รองรับองค์ประกอบบางอย่างดังนั้นหากเรามีการใช้งาน TextBox อยู่อาจเกิดปัญหาได้ เพราะเป็นวิชวลที่เพิ่งนำมาใช้ และยังไม่ได้อัพเดทให้ใช่ทั้งหมดที่รองรับโดยการกำหนดข้อมูลได้ ดังนั้นกรุณาประเมินล่วงหน้าก่อนใช้งานจริง และตอนนี้ผมได้ลบในส่วนของ TextBox ออกไปแล้วทำให้ตัวคำสั่งนั้นใช้งานได้ปกติครับ
% aws quicksight create-dashboard --aws-account-id 123456789012 --dashboard-id test-dashboard1234 --name test-create --region ap-southeast-1 --definition file:///definition.json
{
"Status": 202,
"Arn": "arn:aws:quicksight:us-east-1:123456789012:user/default/cmth-chawish.tilakul",
"VersionArn": "arn:aws:quicksight:us-east-1:123456789012:user/default/cmth-chawish.tilakul",
"DashboardId": "dashboard1234",
"CreationStatus": "CREATION_IN_PROGRESS",
"RequestId": "822e5232-3065-43cf-a30e-844fa8e6f7db"
}
อย่างไรก็ตามในตอนนี้ จะไม่มีการแสดงในรายการ Dashboard เนื่องจากเพิ่งสร้างขึ้นและไม่มีสิทธิ์ในการใช้งาน object
และนี้คือสิทธิ์พื้นฐานทั้งหมดเพื่อให้เราตรวจสอบได้ เพื่อที่เราจะสามารถระมัดระมังเรื่องสิทธิ์หลังจากสร้าง Object ในโค้ดที่อยู่บน QuickSight ให้สิทธิ์แก่ผู้ใช้ QuickSight ที่เรากำลังเข้าใช้งานอยู่
permissions.json
[
{
"Principal": "arn:aws:quicksight:ap-northeast-1:123456789012:dashboard/dashboard1234",
"Actions": [
"quicksight:DescribeDashboard",
"quicksight:ListDashboardVersions",
"quicksight:UpdateDashboardPermissions",
"quicksight:QueryDashboard",
"quicksight:UpdateDashboard",
"quicksight:DeleteDashboard",
"quicksight:DescribeDashboardPermissions",
"quicksight:UpdateDashboardPublishedVersion"
]
}
]
% aws quicksight update-dashboard-permissions --aws-account-id 123456789012 --dashboard-id test-dashboard1234 --grant-permissions file:///permissions.json
{
"Status": 200,
"DashboardArn": "arn:aws:quicksight:ap-northeast-1:123456789012:dashboard/dashboard1234",
"DashboardId": "dashboard1234",
"Permissions": [
{
"Principal": "arn:aws:quicksight:us-east-1:123456789012:user/default/cmth-chawish.tilakul",
"Actions": [
"quicksight:DescribeDashboard",
"quicksight:ListDashboardVersions",
"quicksight:UpdateDashboardPermissions",
"quicksight:QueryDashboard",
"quicksight:UpdateDashboard",
"quicksight:DeleteDashboard",
"quicksight:DescribeDashboardPermissions",
"quicksight:UpdateDashboardPublishedVersion"
]
}
],
"RequestId": "df8586f4-f5a2-4a4a-9e8e-4f534ea4fefa",
"LinkSharingConfiguration": {
"Permissions": []
}
}
การใช้งาน Permission สำเร็จลุล่วงไปได้ด้วยดีและตัว Dashboard ก็แสดงผลได้ปกติ
ถ้าเราสร้าง Dashboard แล้วตัวระบบก็จะแสดงผลตามที่เรากำหนดค่าไว้ก่อนหน้านี้
อย่างไรก็ตาม นี่คือ Dashboard ที่ใช้อ้างอิงบล็อกในครั้งนี้
เนื่องจากผมได้ลบส่วน TextBox ออกไป แดชบอร์ดที่สร้างจากโค้ดจึงลบ TextBox ออกไปนั้นเองครับ
สุดท้าย
ล่าสุด ณ วันนี้เรารู้แล้วว่า Amazon QuickSight สามารถเขียนโค้ดจัดการ dashboards, analyses, templates ได้แล้ว ดังนั้นผมจะลองใช้งานสิ่งนี้ดู
และผมคิดว่ามันไม่ธรรมดาเลย เพราะไม่กี่เดือนที่ผ่านมา ก็มีคนถามผมว่า "เป็นไปได้ไหมที่จะทำ IaC ใน QuickSight" ซึ่งนี้ถือเป็นวิวัฒนาการของ QuickSight ที่ดีมากยิ่งขึ้น
และ CloudFormation มีแนวโน้มที่จะถูกนำมาใช้ในเร็วๆ นี้ด้วยเช่นกัน! ผมจะรอคอยที่จะได้ใช้งานในอนาคต
แต่ในขณะนี้ เรามาลองแค่แดชบอร์ดกันก่อน และผมคิดว่าอนาคตจะมีบทความเพิ่มเติมเกี่ยวกับการวิเคราะห์ วิธีสร้างเทมเพลต และข้อมูลโดยละเอียดเกี่ยวกับคำจำกัดความออกมาให้เราเห็นกันเรื่อยๆแน่นอน
AWS re:Invent พิเศษ
งานการประชุมที่ใหญ่ที่สุดของ AWS จะจัดขึ้นในลาสเวกัสตั้งแต่วันที่ 28 พฤศจิกายนถึง 2 ธันวาคม 2022ในปีนี้ พนักงานมากกว่า 50 คนจาก ClassMethod จะเข้าร่วมในงานและรายงานข่าวเพื่อเตรียมพอร์ทัลไซต์ที่แนะนำสำหรับแต่ละเซสชัน
ภาษาญี่ปุ่น Visit the re:Invent 2022 portal site
ในช่วงระยะเวลากิจกรรม เราจะโพสต์บทความเพิ่มเติมในหน้าฟีเจอร์ฉนั้นถ้าเราไม่อยากพลาดแนะนำให้ลองเข้าร่วมดูครับ
สรุป
เนื้อหาทั้งหมดในบล็อกนี้ผมแปลมาจากบล็อกต้นฉบับของคุณ いわさ สิ่งทุกท่านสามารไปตามอ่านดูได้ในเวอร์ชั่นภาษาญี่ปุ่นได้ที่ลิงค์ด้านล่างนี้เลยครับผม
- Amazon QuickSight でダッシュボード、分析、テンプレートをコード管理出来るようになりました #reInvent